Micron Document
🎖️GitЯра🎖️

Node / meshtastic / Meshtastic-Android / files / core / domain / src / commonTest / kotlin / org / meshtastic / core / domain / usecase / settings / SetMeshLogSettingsUseCaseTest.kt

Displaying Raw • Download

core/domain/src/commonTest/kotlin/org/meshtastic/core/domain/usecase/settings/SetMeshLogSettingsUseCaseTest.kt bd2863243bab6eb213401d949839a2bc74dde7e2 (bd286324) Text, 4.27 KB

T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.core.domain.usecase.settings

Tff7b72import T7ee787kotlinx.coroutines.test.runTest
Tff7b72import T7ee787org.meshtastic.core.common.util.nowMillis
Tff7b72import T7ee787org.meshtastic.core.model.MeshLog
Tff7b72import T7ee787org.meshtastic.core.repository.MeshLogRetention
Tff7b72import T7ee787org.meshtastic.core.testing.FakeMeshLogPrefs
Tff7b72import T7ee787org.meshtastic.core.testing.FakeMeshLogRepository
Tff7b72import T7ee787kotlin.test.BeforeTest
Tff7b72import T7ee787kotlin.test.Test
Tff7b72import T7ee787kotlin.test.assertEquals
Tff7b72import T7ee787kotlin.time.Duration.Companion.days
Tff7b72import T7ee787kotlin.time.Duration.Companion.hours
Tff7b72import T7ee787kotlin.time.Duration.Companion.minutes

Tff7b72class T56d364SetMeshLogSettingsUseCaseTest Tb4b4b4{

Tff7b72private Tff7b72lateinit Tff7b72var Te6edf3meshLogRepositoryTb4b4b4: Te6edf3FakeMeshLogRepository
Tff7b72private Tff7b72lateinit Tff7b72var Te6edf3meshLogPrefsTb4b4b4: Te6edf3FakeMeshLogPrefs
Tff7b72private Tff7b72lateinit Tff7b72var Te6edf3useCaseTb4b4b4: Te6edf3SetMeshLogSettingsUseCase

Tf0883e@BeforeTest
Tff7b72fun Td2a8ffsetUpTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3meshLogRepository Tff7b72= Te6edf3FakeMeshLogRepositoryTb4b4b4(Tb4b4b4)
Te6edf3meshLogPrefs Tff7b72= Te6edf3FakeMeshLogPrefsTb4b4b4(Tb4b4b4)
Te6edf3useCase Tff7b72= Te6edf3SetMeshLogSettingsUseCaseTb4b4b4(Te6edf3meshLogRepositoryTb4b4b4, Te6edf3meshLogPrefsTb4b4b4)
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ff`setRetentionDays clamps value and deletes old logs`Tb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3useCaseTb4b4b4.Te6edf3setRetentionDaysTb4b4b4(T79c0ff5T79c0ff0T79c0ff0Tb4b4b4) T8b949e// Max is 365
Te6edf3assertEqualsTb4b4b4(T79c0ff3T79c0ff6T79c0ff5Tb4b4b4, Te6edf3meshLogPrefsTb4b4b4.Te6edf3retentionDaysTb4b4b4.Te6edf3valueTb4b4b4)
Te6edf3assertEqualsTb4b4b4(T79c0ff3T79c0ff6T79c0ff5Tb4b4b4, Te6edf3meshLogRepositoryTb4b4b4.Te6edf3lastDeletedOlderThanTb4b4b4)
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ff`setRetentionDays one hour keeps the last hour instead of every log`Tb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Tff7b72val Te6edf3now Tff7b72= Te6edf3nowMillis
Te6edf3meshLogRepositoryTb4b4b4.Te6edf3setLogsTb4b4b4(
Te6edf3listOfTb4b4b4(
Te6edf3MeshLogTb4b4b4(Ta5d6ff"Ta5d6ffrecentTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffTEXTTa5d6ff"Tb4b4b4, Te6edf3now Tff7b72- T79c0ff3T79c0ff0.Te6edf3minutesTb4b4b4.Te6edf3inWholeMillisecondsTb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3MeshLogTb4b4b4(Ta5d6ff"Ta5d6ffstaleTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffTEXTTa5d6ff"Tb4b4b4, Te6edf3now Tff7b72- T79c0ff2.Te6edf3hoursTb4b4b4.Te6edf3inWholeMillisecondsTb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)

Te6edf3useCaseTb4b4b4.Te6edf3setRetentionDaysTb4b4b4(Te6edf3MeshLogRetentionTb4b4b4.Te6edf3ONE_HOURTb4b4b4)

Te6edf3assertEqualsTb4b4b4(Te6edf3MeshLogRetentionTb4b4b4.Te6edf3ONE_HOURTb4b4b4, Te6edf3meshLogPrefsTb4b4b4.Te6edf3retentionDaysTb4b4b4.Te6edf3valueTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3listOfTb4b4b4(Ta5d6ff"Ta5d6ffrecentTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3meshLogRepositoryTb4b4b4.Te6edf3currentLogsTb4b4b4.Te6edf3map Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3uuid Tb4b4b4}Tb4b4b4)
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ff`setRetentionDays never keeps every log`Tb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Tff7b72val Te6edf3now Tff7b72= Te6edf3nowMillis
Te6edf3meshLogRepositoryTb4b4b4.Te6edf3setLogsTb4b4b4(
Te6edf3listOfTb4b4b4(
Te6edf3MeshLogTb4b4b4(Ta5d6ff"Ta5d6ffancientTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffTEXTTa5d6ff"Tb4b4b4, Te6edf3now Tff7b72- T79c0ff4T79c0ff0T79c0ff0.Te6edf3daysTb4b4b4.Te6edf3inWholeMillisecondsTb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3MeshLogTb4b4b4(Ta5d6ff"Ta5d6ffrecentTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffTEXTTa5d6ff"Tb4b4b4, Te6edf3nowTb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)

Te6edf3useCaseTb4b4b4.Te6edf3setRetentionDaysTb4b4b4(Te6edf3MeshLogRetentionTb4b4b4.Te6edf3KEEP_FOREVERTb4b4b4)

Te6edf3assertEqualsTb4b4b4(Te6edf3MeshLogRetentionTb4b4b4.Te6edf3KEEP_FOREVERTb4b4b4, Te6edf3meshLogPrefsTb4b4b4.Te6edf3retentionDaysTb4b4b4.Te6edf3valueTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3listOfTb4b4b4(Ta5d6ff"Ta5d6ffancientTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffrecentTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3meshLogRepositoryTb4b4b4.Te6edf3currentLogsTb4b4b4.Te6edf3map Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3uuid Tb4b4b4}Tb4b4b4)
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ff`setLoggingEnabled true trims to the one hour sentinel`Tb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Tff7b72val Te6edf3now Tff7b72= Te6edf3nowMillis
Te6edf3meshLogPrefsTb4b4b4.Te6edf3setRetentionDaysTb4b4b4(Te6edf3MeshLogRetentionTb4b4b4.Te6edf3ONE_HOURTb4b4b4)
Te6edf3meshLogRepositoryTb4b4b4.Te6edf3setLogsTb4b4b4(
Te6edf3listOfTb4b4b4(
Te6edf3MeshLogTb4b4b4(Ta5d6ff"Ta5d6ffrecentTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffTEXTTa5d6ff"Tb4b4b4, Te6edf3now Tff7b72- T79c0ff3T79c0ff0.Te6edf3minutesTb4b4b4.Te6edf3inWholeMillisecondsTb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3MeshLogTb4b4b4(Ta5d6ff"Ta5d6ffstaleTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffTEXTTa5d6ff"Tb4b4b4, Te6edf3now Tff7b72- T79c0ff2.Te6edf3hoursTb4b4b4.Te6edf3inWholeMillisecondsTb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)

Te6edf3useCaseTb4b4b4.Te6edf3setLoggingEnabledTb4b4b4(Tff7b72trueTb4b4b4)

Te6edf3assertEqualsTb4b4b4(Te6edf3listOfTb4b4b4(Ta5d6ff"Ta5d6ffrecentTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3meshLogRepositoryTb4b4b4.Te6edf3currentLogsTb4b4b4.Te6edf3map Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3uuid Tb4b4b4}Tb4b4b4)
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ff`setLoggingEnabled false deletes all logs`Tb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3useCaseTb4b4b4.Te6edf3setLoggingEnabledTb4b4b4(Tff7b72falseTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Tff7b72falseTb4b4b4, Te6edf3meshLogPrefsTb4b4b4.Te6edf3loggingEnabledTb4b4b4.Te6edf3valueTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Tff7b72trueTb4b4b4, Te6edf3meshLogRepositoryTb4b4b4.Te6edf3deleteAllCalledTb4b4b4)
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ff`setLoggingEnabled true deletes logs older than retention`Tb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Te6edf3meshLogPrefsTb4b4b4.Te6edf3setRetentionDaysTb4b4b4(T79c0ff1T79c0ff5Tb4b4b4)
Te6edf3useCaseTb4b4b4.Te6edf3setLoggingEnabledTb4b4b4(Tff7b72trueTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Tff7b72trueTb4b4b4, Te6edf3meshLogPrefsTb4b4b4.Te6edf3loggingEnabledTb4b4b4.Te6edf3valueTb4b4b4)
Te6edf3assertEqualsTb4b4b4(T79c0ff1T79c0ff5Tb4b4b4, Te6edf3meshLogRepositoryTb4b4b4.Te6edf3lastDeletedOlderThanTb4b4b4)
Tb4b4b4}
Tb4b4b4}

Served by rngit 1.5.0 - Generated in 0.09s